iT邦幫忙

2024 iThome 鐵人賽

DAY 11
0
Software Development

Spring boot 從零到寫出ChatGPT系列 第 11

Spring boot 從零開始 (11) - Spring Data JPA讓資料庫處理變得更輕鬆 (上集)

  • 分享至 

  • xImage
  •  

在介紹Spring Data JPA之前,我們先來簡單介紹ORM。

ORM是甚麼

ORM (Object-Relational Mapping) ,它是一個幫助使用者簡單、安全的去從資料庫讀取資料,是透過程式語言,去操作資料庫語言。

ORM的優點

  1. 提高安全性 : ORM 可以通過防止 SQL 注入攻擊等方式,提高應用程式的安全性。
  2. 提高通用性與可維護性 : 因為不管是連接哪種資料庫,語法都類似,不用大量修改程式碼,但是如果是SQL的話,如果是要從PLSQL變成Monogo Query的話,可想而知差異絕對很大。

ORM的缺點

  1. 效能較差 : 由於 ORM 在背後進行了大量的轉換與映射,所以會比直接下SQL的效能差。
    2.** 無法實現太複雜的SQL語法** : 若跟許多table都要互相關聯的這種複雜語法的話,比較不容易實現。

那介紹完ORM之後,我們言歸正傳,

Spring Data JPA

主要是因為Spring boot推薦我們直接使用Spring Data JPA去做ORM 持久層,所以我們接著下來就來介紹甚麼使用吧 !

加入Dependency

  • 在pom.xml加入spring-boot-starter-data-jpa
    <dependency>
        <groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-data-jpa</artifactId>
	</dependency>

如前面介紹我們已經建立的Model,如果還不太熟悉的話可以參考 Spring boot 從零開始 (7) - Spring boot 搭配H2 Database

接著我們來說明今天最重要的重點

建立 JpaRepository

新增 Repository 來做為資料庫溝通介面
我們可以直接在介面上下 @Repository

import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

@Repository
public interface BookRepo extends JpaRepository<Book, Integer> {
    Book findBookByBookId(Integer bookId);
}

JpaRepository<Book, Integer> 這段話的意思主要就是放上你的物件和主鍵類別的部分。

如果當你都沒有特別定義方法之前,本身就可以直接利用 JpaRepository 來操作 savedelete 等對資料庫的操作,但也可以自定義方法,我們明天就來幫大家列出Spring data JPA 常用的find的語法跟SQL的對應。

也會在教大家怎麼寫一隻包含CRUD的Serivce搭配我們今天建立的Repository !!!

參考文件


上一篇
Spring boot 從零開始 (10) - 如何利用Swagger快速生成API文件
下一篇
Spring boot 從零開始 (12) - Spring Data JPA讓資料庫處理變得更輕鬆 (下集)
系列文
Spring boot 從零到寫出ChatGPT30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言